// 自定义类型校验，这里的提示都是给用户的
module.exports = (app) => {
  const { validator } = app;
  // 验证不能为空
  validator.addRule("nullValue", (rule, value) => {
    let isNull;
    if (typeof value === "string") {
      isNull = value.trim();
    } else if (typeof value === "number") {
      isNull = true;
    } else if (Array.isArray(value)) {
      isNull = value.length;
    }
    if (!isNull) {
      return rule.fieldName + "不能为空";
    }
  });
  // 验证手机号
  app.validator.addRule("phone", (rule, value) => {
    value = value.trim();
    if (!value) {
      return (rule.fieldName || "用户名") + "不能为空";
    }
    if (!/^1\d{10}$/.test(value)) {
      // 自定义的tips字段
      // return rule.tips;
      return (rule.fieldName || "用户名") + "格式错误";
    }
  });
  // 8-16位，字母加数字
  validator.addRule("password", (rule, value) => {
    if (!/^[A-Za-z0-9]{8,16}$/.test(value)) {
      return "密码格式错误";
    }
  });
  // 验证商品属性
  validator.addRule("attrDetail", (rule, value) => {
    if (value && Array.isArray(value)) {
      for (const item of value) {
        if (!item.price) {
          return "商品价格不能为空";
        }
        if (item.stock !== 0 && !item.stock) {
          return "商品库存不能为空";
        }
      }
    } else {
      return rule.fieldName + "不能为空";
    }
  });
};
